package org.me.service.impl;

import java.io.Serializable;
import java.util.List;
import org.me.data.GenericDaoHibernate;
import org.me.entityBeans.TClientes;
import org.me.service.ClienteServiceHibernate;

public class ClienteServiceHibernateImpl implements ClienteServiceHibernate{
    
    private GenericDaoHibernate genericDaoHibernateImpl;

    public GenericDaoHibernate getGenericDaoHibernateImpl() {
        return genericDaoHibernateImpl;
    }

    public void setGenericDaoHibernateImpl(GenericDaoHibernate genericDaoHibernateImpl) {
        this.genericDaoHibernateImpl = genericDaoHibernateImpl;
    }
    
    //Graba o actualiza un Cliente x su Id, es de tipo TRANSACTIONAL -> definido en la interfaz
    public void saveOrUpdateCliente(TClientes cliente) {
        this.getGenericDaoHibernateImpl().saveOrUpdate(cliente);
    }     

    //Borra un Cliente x su Id
    public String deleteCliente(TClientes cliente) {
        return this.getGenericDaoHibernateImpl().delete(cliente);
    }
    
    //Trae todos los Clientes
    public List<TClientes> findAllClientes() {
        return this.getGenericDaoHibernateImpl().findByOnlyNamedQuery( "TClientes.findAll");
    }    
     
    //Trae el/los Cliente/s que coincida/n con el nombre
    public List<TClientes> findByNameCliente(String nomCliente) {
         return this.getGenericDaoHibernateImpl().findByCriterio( "TClientes.findByVNombreCte", "vNombreCte", nomCliente );
    }

    //Trae el Cliente que coincida con el id 
    public TClientes findByIdCliente(Serializable id) {
        return  this.getGenericDaoHibernateImpl().findById(TClientes.class, id);
    }
    
    //Trae el Cliente que coincida con el DNI
    public List<TClientes> findByDNICliente(Integer dni) {
         return this.getGenericDaoHibernateImpl().findByCriterio( "TClientes.findByNDniCte", "nDniCte", dni );
    }
    
    //Trae el Cliente que coincida con el RUC
    public List<TClientes> findByRUCCliente(String ruc) {
         return this.getGenericDaoHibernateImpl().findByCriterio( "TClientes.findByVRucCte", "vRucCte", ruc );
    }   
    
}
